#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <assert.h>
#include <string.h>
//char* my_strncpy(char* dest, const char* src, size_t num)
//{
//	assert(dest && src);
//	char* ret = dest;
//	char* start = src;
//	while (src - start < num && *src != '\0')
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	if (src - start < num)
//	{
//		while (src - start < num)
//		{
//			*dest = '\0';
//			dest++;
//			start++;
//		}
//	}
//	return ret;
//}
//int main()
//{
//	char str1[] = "defghabc";
//	char str2[30] = "abcdefghijklmn";
//	my_strncpy(str2, str1, 8);
//	printf("%s\n", str2);
//	return 0;
////}
//char* my_strcpy(char* dest, const char* src)
//{
//	assert(dest && src);
//	char* ret = dest;
//	while (*src != '\0')
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	*dest = *src;
//	return ret;
//}
//int main()
//{
//	char str1[] = "defghabc";
//	char str2[30] = "abcdefghijklmn";
//	my_strcpy(str2, str1);
//	printf("%s\n", str2);
//	return 0;
//}
//char* my_strcat(char* dest, char* src)
//{
//	assert(dest && src);
//	char* ret = dest;
//	while (*dest != '\0')
//	{
//		dest++;
//	}
//	while (*src != '\0')
//	{
//		*dest = *src;
//		dest++;
//		src++;
//	}
//	*dest = *src;
//	return ret;
//}
//int main()
//{
//	char str1[] = "abcdef";
//	char str2[30] = "abcdefghijklmn";
//	my_strcat(str2, str1);
//	printf("%s\n", str2);
//	return 0;
//}
char* my_strncat(char* dest, const char* src, size_t num)
{
	assert(dest && src);
	char* ret = dest;
	char* start = src;
	while (*dest != '\0')
	{
		dest++;
	}
	while (src - start < num && *src != '\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = '\0';
	return ret;
}
int main()
{
	char str1[] = "abcdef";
	char str2[30] = "abcdefghijklmn";
	my_strncat(str2, str1, 6);
	printf("%s\n", str2);
	return 0;
}